package com.tangcco.lockwell.repository;

import com.tangcco.lockwell.domain.Inform;
import com.tangcco.lockwell.domain.dto.inform.InformDto;
import com.tangcco.lockwell.viewmodel.admin.Inform.AcceptInformVM;
import com.tangcco.lockwell.viewmodel.admin.Inform.InformVM;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface InformMapper extends BaseMapper<Inform>{
    //修改是否已读状态
    int updateIsRead(InformVM inform);


    //灵活查询
    List<InformVM> selectSelective(InformVM informVM);

    int insertBatch(Map<String,Object> map);

    int insertSelective(Inform inform);
    int insertSelectiveNotNull(Inform inform);

    List<AcceptInformVM> selectAcceptInform(AcceptInformVM model);

    //删除记录
    Integer deleteInform(Integer informId);

    /**
     * 学生端消息列表
     * @param acceptUserId
     * @return
     */
    List<InformDto> selectListForStudent(@Param("acceptUserId") Integer acceptUserId, @Param("isRead") Integer isRead);
    /**
     * 学生端老师消息列表
     * @param sendUserId
     * @return
     */
    List<InformDto> selectListForTeacher(@Param("sendUserId") Integer sendUserId);
    /**
     * 学生端消息详情
     * @param informId
     * @return
     */
    InformDto selectDetailForStudent(@Param("informId") Integer informId);
    /**
     * 教师端消息详情
     * @param informId
     * @return
     */
    List<InformDto> selectDetailForTeacher(@Param("informId") Integer informId);

    /**
     * 全部标为已读
     * @param userId
     * @return
     */
    int markAllAsReadByUserId(@Param("userId") Integer userId);

    /**
     * 按id标为已读
     * @param childId
     * @return
     */
    int markAsReadByChildId(@Param("childId") Integer childId);

}
